#pragma once

#include "PDAfederateAmbassador.h"
#include "PDAserver.h"
#include <string>

using namespace net;

namespace rti1516
{
  class LRCambassador;
}

namespace rti1516
{
	class LRCambassador
	{
	public:
		LRCambassador(void);

		virtual ~LRCambassador(void);
		
		virtual void createFederationExecution(std::wstring const & federationExecutionName);
		
		virtual void joinFederationExecution 
			(std::wstring const & federateType,
			std::wstring const & federationExecutionName,
			PDAfederateAmbassador & federateAmbassador);

		virtual void resignFederationExecution();

		virtual void destroyFederationExecution 
			(std::wstring const & federationExecutionName);

		virtual void updateAttributeValues();
		// 10.37
		virtual bool evokeCallback();
	private:
		// the federate ambassador that should receive call backs
		PDAfederateAmbassador* pfamb;
		// the proxy server to communicate with pda server
		PDAserver* server;
	};
}